﻿#include <stdio.h>

/*给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] ，就返回 0。
假设环境不允许存储 64 位整数（有符号或无符号）。*/

int reverse(int x) {
    int ans = 0;
    while (x)
    {
        int tmp = x % 10;    
        //-2147483648~2147483647范围内，又假设环境不允许存储64位整数
        if (ans > 214748364 || (ans == 214748364 && tmp > 7))
            return 0;
        if (ans < -214748364 || (ans == -214748364 && tmp < -8))
            return 0;
        ans = ans * 10 + tmp;
        x /= 10;
    }
    return ans;
}

int main()
{
    int num = 29575;
    int ret = reverse(num);
    printf("%d", ret);
    return 0;
}